#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 1e4 + 10;
char s[maxn];
char t[maxn];
int h1[maxn]; // 从前到后
int h2[maxn]; // 从后到前
int bs[maxn];
int base=131;
int n, m,k;

int getHash(int h[], int l, int r){
	return h[r]-h[l-1]*bs[r-l+1];
}
void solve(){
	cin>>n>>m>>k;
	cin>>(s+1);
	cin>>(t+1);
	bs[0]=1;
	for (int i=1;i<=n;i++) {
		bs[i]=bs[i-1]*base;
		h1[i]=h1[i-1]*base+s[i];
		if (i<=m) {
			h2[i]=h2[i-1]*base+t[i];
		}
	}
	
	// 对 t 进行拆分为两部分
	for (int i=1;i<=m;i++) {
		int l=k, r=n-k+1; // s 两部分的长度 >=k
		while(l<r){ // 不能重叠
			bool flag1=true, flag2=true;
			if (getHash(h1, l-i+1,l)!=getHash(h2, 1, i)) { // 左部分不符合条件
				l++;
				flag1=false;
			}
			if (getHash(h1, r, r+(m-i)-1)!=getHash(h2, i+1, m)) { // 右部分不符合
				r--;
				flag2=false;
			}
			if (flag1&&flag2) { // 两边都符合
				cout << "Yes"<<'\n';
				return;
			}
		}
	}
	cout <<"No"<<'\n';
	return;
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
